package cn.lcsjsxy.yxc.objectoriented.接口.java7及以前;
/*
* 接口的使用
* 1.接口使用interface来定义。
* 2.Java中，接口和类是并列的两个结构。
* 3.如何定义接口：定义接口中的成员
*       3.1 JDK7及以前：只能定义全局常量和抽象方法
*           》public static final的,但是书写时，可以省略不写
*           》抽象方法：public abstract的
*
*       3.2 JDK8:除了定义全局常量和抽象方法之外，还可以定义静态方法、默认方法（略）
* 4.接口中不能定义构造器，意味着接口不可以实例化
* 5.Java开发中，接口通过让类去实现（implements）的方式来使用
*   如果实现类覆盖了接口中的所有抽象方法，则此实现类就可以实例化
*   如果实现类没有覆盖接口中所有的抽象方法，则此实现类仍为一个抽象类
* 6.java类可以实现多个接口 ————》弥补了java单继承性的局限性
*   格式：class AA extends BB implements CC,DD,EE{}  先写继承后写接口
* 7.接口与接口之间可以继承，而且可以多继承
* 8.接口的具体使用：体现多态性
* 9.com.yang_xc.objectoriented.接口：实际上可以看作是一种规范
* */
public class InterfaceTest {
    public static void main(String[] args) {
        System.out.println(Flyable.MAX_SPEED);
        System.out.println(Flyable.MIN_SPEED);
    }
}

//com.yang_xc.objectoriented.接口
interface Flyable{
    //全局常量
    public static final int MAX_SPEED=7900;  //第一宇宙速度
    int MIN_SPEED=1;  //省略了 public static final

    //抽象方法
    public abstract void fly();
    void stop();
    //省略了 public abstract

//    public Flyable(){  不能整构造器
//
//    }
}

interface Attack{
    //抽象方法省略了 public abstract;
    void attack();
}

//实现接口
class Plane implements Flyable{
    @Override
    public void fly() {
        System.out.println("想飞上天和太阳肩并肩~~~~~~~~~~~");
    }

    @Override
    public void stop() {
        System.out.println("舒克舒克舒克舒克开飞机~~~~~~~~~");
    }
}

//实现多个接口
class Bullet extends Object implements Flyable,Attack,CC{
    @Override
    public void fly() {

    }

    @Override
    public void stop() {

    }

    @Override
    public void attack() {

    }

    @Override
    public void method1() {

    }

    @Override
    public void method2() {

    }
}

//*****************************************

interface AA{
    void method1();
}

interface BB{
    void method2();
}

interface CC extends AA,BB{  //继承了两个接口

}